package com.pqj.pqaiagent.tool;

import cn.hutool.core.io.FileUtil;
import com.pqj.pqaiagent.constant.FileConstant;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;

/**
 * 文件操作工具类（提供文件读写功能）
 */
public class FileOperationTool {

    // 定义常量文件存储路径，基于FileConstant中的基础路径加上"/file"
    private final String FILE_DIR = FileConstant.FILE_SAVE_DIR + "/file";

    @Tool(description = "Read content from a file")  // 使用@Tool注解标记方法，描述为"从文件读取内容"
    public String readFile(@ToolParam(description = "Name of a file to read") String fileName) {  // 定义读取文件方法，参数fileName用@ToolParam注解描述
        String filePath = FILE_DIR + "/" + fileName; // 拼接完整的文件路径：基础路径 + 文件名
        try {
            return FileUtil.readUtf8String(filePath); // 使用FileUtil工具以UTF-8编码读取文件内容
        } catch (Exception e) {
            return "Error reading file: " + e.getMessage(); // 捕获异常并返回错误信息
        }
    }

    @Tool(description = "Write content to a file")
    public String writeFile(@ToolParam(description = "Name of the file to write") String fileName,
                            @ToolParam(description = "Content to write to the file") String content
    ) {
        String filePath = FILE_DIR + "/" + fileName;

        try {
            // 创建目录
            FileUtil.mkdir(FILE_DIR);// 确保文件存储目录存在，不存在则创建
            FileUtil.writeUtf8String(content, filePath);  // 使用FileUtil工具以UTF-8编码写入内容到文件
            return "File written successfully to: " + filePath; // 返回成功信息及文件路径
        } catch (Exception e) {
            return "Error writing to file: " + e.getMessage(); // 捕获异常并返回错误信息
        }
    }
}
